<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Coverage Report</title>
<link title="Style" type="text/css" rel="stylesheet" href="css/main.css"/>
<script type="text/javascript" src="js/popup.js"></script>
</head>
<body>
<h5>Coverage Report - abc.parser.AbcParserAbstract</h5>
<div class="separator">&nbsp;</div>
<table class="report">
<thead><tr>  <td class="heading">Classes in this File</td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Line Coverage</a></td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Branch Coverage</a></td>  <td class="heading"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">Complexity</a></td></tr></thead>
  <tr><td><a href="abc.parser.AbcParserAbstract.html">AbcParserAbstract</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">91%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:90px"><span class="text">725/801</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">94%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:93px"><span class="text">181/193</span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.629032258064516;</span>4.629</td></tr>
  <tr><td><a href="abc.parser.AbcParserAbstract.html">AbcParserAbstract$1</a></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40">100%</td><td class="percentgraph"><div class="percentgraph"><div class="greenbar" style="width:100px"><span class="text">4/4</span></div></div></td></tr></table></td><td><table cellpadding="0px" cellspacing="0px" class="percentgraph"><tr class="percentgraph"><td align="right" class="percentgraph" width="40"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></td><td class="percentgraph"><div class="percentgraph"><div class="na" style="width:100px"><span class="text"><a class="dfn" href="help.html" onclick="popupwindow('help.html'); return false;">N/A</a></span></div></div></td></tr></table></td><td class="value"><span class="hidden">4.629032258064516;</span>4.629</td></tr>

</table>
<div class="separator">&nbsp;</div>
<table cellspacing="0" cellpadding="0" class="src">
<tr>  <td class="numLine">&nbsp;1</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">package</span> abc.parser;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;2</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;3</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> java.util.Vector;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;4</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;5</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.CharStreamPosition;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;6</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.FinaleStateAutomata;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;7</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.InvalidCharacterEvent;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;8</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.NoSuchTokenException;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;9</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.Scanner;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;10</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.ScannerListenerInterface;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;11</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.Set;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;12</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.Token;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;13</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.TokenEvent;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;14</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> scanner.TokenType;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;15</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.AccidentalType;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;16</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.BarLine;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;17</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Fraction;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;18</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.KeySignature;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;19</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.MultiPartsDefinition;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;20</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;21</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.NoteAbstract;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;22</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.RepeatBarLine;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;23</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.RepeatedPart;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;24</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.RepeatedPartAbstract;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;25</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Tempo;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;26</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.TimeSignature;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;27</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Tune;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;28</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Tuplet;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;29</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.notation.Words;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;30</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.parser.AbcToolkit.DurationDescription;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;31</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">import</span> abc.parser.def.DefinitionFactory;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;32</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;33</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/** Abstract class from which all abc notation parsers inherit.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;34</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Known limitations:</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;35</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * ELEMSKIP is not supported. </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;36</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment"> * Missing support for tex command and file fields. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;37</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp; <span class="comment">//</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;38</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp; <span class="comment">// The context to switch from abc header parsing to abc music parsing</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;39</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp; <span class="comment">// is done in &lt;PRE&gt;private KeySignature parseFieldKey(Set follow)&lt;/PRE&gt;.*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;40</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="keyword">public</span> <span class="keyword">class</span> AbcParserAbstract</pre></td></tr>
<tr>  <td class="numLine">&nbsp;41</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;{</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;42</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_END_OF_LINE = <span class="keyword">new</span> Set(AbcTokenType.LINE_FEED).union(AbcTokenType.SPACE)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;43</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      .union(AbcTokenType.COMMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;44</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_PART_SPEC = <span class="keyword">new</span> Set(AbcTokenType.PART).union(AbcTokenType.PARENTHESIS_OPEN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;45</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_PARTS = FIRST_PART_SPEC;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;46</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;47</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_NOTE_LENGTH_STRICT = <span class="keyword">new</span> Set(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;48</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;49</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_TEMPO = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.C_TEMPO).union(FIRST_NOTE_LENGTH_STRICT);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;50</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;51</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_METER_FRACTION = <span class="keyword">new</span> Set(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;52</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_METER = <span class="keyword">new</span> Set(FIRST_METER_FRACTION).union(AbcTokenType.C_METER);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;53</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;54</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> Set FIRST_GLOBAL_ACCIDENTAL = <span class="keyword">new</span> Set(FIRST_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;55</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_MODE = <span class="keyword">new</span> Set(AbcTokenType.MODE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;56</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_MODE_SPEC = <span class="keyword">new</span> Set(FIRST_MODE);<span class="comment">//.union(AbcTokenType.SPACE);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;57</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_KEY_ACCIDENTAL = <span class="keyword">new</span> Set(AbcTokenType.KEY_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;58</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_KEYNOTE = <span class="keyword">new</span> Set(AbcTokenType.BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;59</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_KEYSPEC = <span class="keyword">new</span> Set(FIRST_KEYNOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;60</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_KEY = <span class="keyword">new</span> Set(FIRST_KEYSPEC).union(AbcTokenType.KEY_HP);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;61</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;62</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_KEY = <span class="keyword">new</span> Set(AbcTokenType.FIELD_KEY);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;63</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_TRANSCRNOTES = <span class="keyword">new</span> Set(AbcTokenType.FIELD_TRANSCRNOTES);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;64</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_SOURCE = <span class="keyword">new</span> Set(AbcTokenType.FIELD_SOURCE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;65</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_RHYTHM = <span class="keyword">new</span> Set(AbcTokenType.FIELD_RHYTHM);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;66</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_TEMPO = <span class="keyword">new</span> Set(AbcTokenType.FIELD_TEMPO);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;67</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_PARTS = <span class="keyword">new</span> Set(AbcTokenType.FIELD_PARTS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;68</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_ORIGIN = <span class="keyword">new</span> Set(AbcTokenType.FIELD_ORIGIN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;69</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_NOTES = <span class="keyword">new</span> Set(AbcTokenType.FIELD_NOTES);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;70</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_METER = <span class="keyword">new</span> Set(AbcTokenType.FIELD_METER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;71</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_DEFAULT_LENGTH = <span class="keyword">new</span> Set(AbcTokenType.FIELD_DEFAULT_LENGTH);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;72</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_INFORMATION = <span class="keyword">new</span> Set(AbcTokenType.FIELD_INFORMATION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;73</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_HISTORY = <span class="keyword">new</span> Set(AbcTokenType.FIELD_HISTORY);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;74</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_GROUP = <span class="keyword">new</span> Set(AbcTokenType.FIELD_GROUP);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;75</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;  <span class="comment">//protected static final Set FIRST_FIELD_ELEMSKIP = new Set(AbcTokenType.FIELD_ELEMSKIP);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;76</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_DISCOGRAPHY = <span class="keyword">new</span> Set(AbcTokenType.FIELD_DISCOGRAPHY);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;77</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_COMPOSER = <span class="keyword">new</span> Set(AbcTokenType.FIELD_COMPOSER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;78</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_BOOK = <span class="keyword">new</span> Set(AbcTokenType.FIELD_BOOK);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;79</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_AREA = <span class="keyword">new</span> Set(AbcTokenType.FIELD_AREA);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;80</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_COMMENT = <span class="keyword">new</span> Set(AbcTokenType.COMMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;81</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;  <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_OTHER_FIELDS = <span class="keyword">new</span> Set(FIRST_FIELD_AREA).union(FIRST_FIELD_BOOK).union(FIRST_FIELD_COMPOSER)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;82</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_DISCOGRAPHY)<span class="comment">/*.union(FIRST_FIELD_ELEMSKIP)*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;83</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_GROUP).union(FIRST_FIELD_HISTORY)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;84</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_INFORMATION).union(FIRST_FIELD_DEFAULT_LENGTH)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;85</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_METER).union(FIRST_FIELD_NOTES).union(FIRST_FIELD_ORIGIN)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;86</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_PARTS).union(FIRST_FIELD_RHYTHM).union(FIRST_FIELD_SOURCE)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;87</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                                            .union(FIRST_FIELD_TEMPO).union(FIRST_FIELD_TRANSCRNOTES).union(FIRST_COMMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;88</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_TITLE = <span class="keyword">new</span> Set(AbcTokenType.FIELD_TITLE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;89</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">final</span> Set FIRST_FIELD_NUMBER = <span class="keyword">new</span> Set(AbcTokenType.FIELD_NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;90</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_ABCHEADER = <span class="keyword">new</span> Set(FIRST_FIELD_NUMBER);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;91</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;92</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//==========================================================================</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;93</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TEXT_CHAR = <span class="keyword">new</span> Set(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;94</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TEXT = <span class="keyword">new</span> Set(FIRST_TEXT_CHAR);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;95</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_LINE_FEED = <span class="keyword">new</span> Set(AbcTokenType.LINE_FEED);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;96</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NO_LINE_BREAK = <span class="keyword">new</span> Set(AbcTokenType.NO_LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;97</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_LINE_BREAK = <span class="keyword">new</span> Set(AbcTokenType.LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;98</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;99</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_SPACE = <span class="keyword">new</span> Set(AbcTokenType.SPACE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;100</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//protected static Set FIRST_TEX_COMMAND = new Set(AbcTokenType.TEX_COMMAND);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;101</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;102</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_USER_DEFINED = <span class="keyword">new</span> Set(AbcTokenType.USER_DEFINED);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;103</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;104</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_FIELD_WORDS = <span class="keyword">new</span> Set(AbcTokenType.FIELD_WORDS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;105</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_FIELD_PART = <span class="keyword">new</span> Set(AbcTokenType.FIELD_PARTS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;106</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TUNE_FIELD = <span class="keyword">new</span> Set(<span class="comment">/*FIRST_FIELD_ELEMSKIP).union(*/</span>FIRST_FIELD_KEY).union(FIRST_FIELD_DEFAULT_LENGTH)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;107</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        .union(FIRST_FIELD_METER).union(FIRST_FIELD_PART).union(FIRST_FIELD_TEMPO).union(FIRST_FIELD_TITLE).union(FIRST_FIELD_WORDS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;108</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_MID_TUNE_FIELD = FIRST_TUNE_FIELD;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;109</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_END_SLUR = <span class="keyword">new</span> Set(AbcTokenType.END_SLUR);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;110</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_BEGIN_SLUR = <span class="keyword">new</span> Set(AbcTokenType.BEGIN_SLUR);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;111</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NTH_REPEAT = <span class="keyword">new</span> Set(AbcTokenType.NTH_REPEAT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;112</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_BARLINE = <span class="keyword">new</span> Set(AbcTokenType.BARLINE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;113</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;114</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_CHORD_TYPE = <span class="keyword">new</span> Set(AbcTokenType.CHORD_TYPE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;115</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Set FIRST_FORMAL_CHORD = <span class="keyword">new</span> Set(FIRST_BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;116</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_GUITAR_CHORD = <span class="keyword">new</span> Set(AbcTokenType.GUITAR_CHORD);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;117</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;118</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_GRACE_NOTES = <span class="keyword">new</span> Set(AbcTokenType.GRACING_BEGIN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;119</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_GRACINGS = <span class="keyword">new</span> Set(AbcTokenType.GRACING);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;120</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TIE = <span class="keyword">new</span> Set(AbcTokenType.TIE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;121</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_BROKEN_RHYTHM = <span class="keyword">new</span> Set(AbcTokenType.BROKEN_RHYTHM);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;122</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_REST = <span class="keyword">new</span> Set(AbcTokenType.REST);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;123</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_BASE_NOTE = <span class="keyword">new</span> Set(AbcTokenType.BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;124</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_ACCIDENTAL = <span class="keyword">new</span> Set(AbcTokenType.ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;125</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NOTE_LENGTH = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;126</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_OCTAVE = <span class="keyword">new</span> Set(AbcTokenType.OCTAVE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;127</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_PITCH = <span class="keyword">new</span> Set(FIRST_ACCIDENTAL).union(FIRST_BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;128</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NOTE_OR_REST = <span class="keyword">new</span> Set(FIRST_PITCH).union(FIRST_REST);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;129</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NOTE = <span class="keyword">new</span> Set(FIRST_NOTE_OR_REST);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;130</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_MULTI_NOTE = <span class="keyword">new</span> Set(AbcTokenType.MULTI_NOTE_BEGIN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;131</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NOTE_STEM = <span class="keyword">new</span> Set(FIRST_GUITAR_CHORD).union(FIRST_GRACE_NOTES).union(FIRST_GRACINGS).union(FIRST_NOTE).union(FIRST_MULTI_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;132</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_NOTE_ELEMENT = <span class="keyword">new</span> Set(FIRST_NOTE_STEM);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;133</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;134</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TUPLET_SPEC = <span class="keyword">new</span> Set(AbcTokenType.TUPLET_SPEC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;135</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_TUPLET_ELEMENT = <span class="keyword">new</span> Set(FIRST_TUPLET_SPEC);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;136</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;137</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_LINE_ENDER = <span class="keyword">new</span> Set(AbcTokenType.COMMENT).union(AbcTokenType.LINE_FEED).union(AbcTokenType.LINE_BREAK)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;138</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        .union(AbcTokenType.NO_LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;139</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_ELEMENT = <span class="keyword">new</span> Set(FIRST_NOTE_ELEMENT).union(FIRST_TUPLET_ELEMENT).union(AbcTokenType.BARLINE)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;140</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        .union(AbcTokenType.NTH_REPEAT).union(AbcTokenType.BEGIN_SLUR).union(AbcTokenType.END_SLUR).union(AbcTokenType.SPACE)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;141</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">/*.union(AbcTokenType.USER_DEFINED)*/</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;142</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Set FIRST_ABC_LINE = <span class="keyword">new</span> Set(FIRST_ELEMENT).union(FIRST_MID_TUNE_FIELD)<span class="comment">/*.union(FIRST_COMMENT).union(FIRST_TEX_COMMAND)*/</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;143</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Set FIRST_ABC_MUSIC = <span class="keyword">new</span> Set(FIRST_ABC_LINE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;144</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;145</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//==========================================================================</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;146</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> Set FIRST_ABCTUNE = <span class="keyword">new</span> Set(FIRST_ABCHEADER);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;147</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The scanner used for parsing. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;148</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Scanner m_scanner;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;149</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;150</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> FinaleStateAutomata m_automata = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;151</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;152</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> ScannerListenerInterface m_scannerListener = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;153</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** Listeners of this parser. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;154</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Vector m_listeners;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;155</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** the current token used by this parser. */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;156</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Token m_token = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;157</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The type of the current token </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;158</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @see #m_token */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;159</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> TokenType m_tokenType = TokenType.UNKNOWN;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;160</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The number of dots inherited from the previous note broken rythm. */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;161</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">byte</span> brknRthmDotsCorrection = 0;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;162</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;163</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">boolean</span> m_isPartOfSlur = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;164</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The current default note length. */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;165</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">short</span> m_defaultNoteLength = Note.EIGHTH;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;166</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;167</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> TimeSignature m_timeSignature = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;168</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The score of the current part. */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;169</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Tune.Score m_score = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;170</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** The tune resulting of the last parsing. */</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;171</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Tune m_tune = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;172</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;173</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** Constructs a new tune parser. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;174</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> AbcParserAbstract()</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;175</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;176</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;      m_scanner = <span class="keyword">new</span> Scanner();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;177</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;      m_automata = <span class="keyword">new</span> FinaleStateAutomata();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;178</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//m_scanner.setFinaleStateAutomata(m_automata);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;179</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;      m_scannerListener = <span class="keyword">new</span> ScannerListenerInterface()</pre></td></tr>
<tr>  <td class="numLine">&nbsp;180</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;181</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//=======================================SCANNER LISTENER BEGIN</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;182</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> <span class="keyword">void</span> tokenGenerated(TokenEvent evt)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;183</td>  <td class="nbHitsCovered">&nbsp;206</td>  <td class="src"><pre class="src">&nbsp;        {}</pre></td></tr>
<tr>  <td class="numLine">&nbsp;184</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;185</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> <span class="keyword">void</span> invalidCharacter(InvalidCharacterEvent evt)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;186</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        { notifyListenersForInvalidCharacter(evt); }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;187</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;188</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">public</span> <span class="keyword">void</span> lineProcessed(String line)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;189</td>  <td class="nbHitsCovered">&nbsp;47</td>  <td class="src"><pre class="src">&nbsp;        { }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;190</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//=======================================SCANNER LISTENER END</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;191</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      };</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;192</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;      m_scanner.addListener(m_scannerListener);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;193</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;      m_listeners = <span class="keyword">new</span> Vector();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;194</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;195</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;196</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** Returns the scanner internally used for parsing.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;197</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return The scanner internally used for parsing. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;198</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> Scanner getScanner()</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;199</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;    { <span class="keyword">return</span> m_scanner; }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;200</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;201</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** Adds a listener to catch events thrown by the parser durin tune parsing.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;202</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param listener Object that implements the TuneParserListenerInterface. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;203</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> addListener (TuneParserListenerInterface listener)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;204</td>  <td class="nbHitsCovered">&nbsp;6</td>  <td class="src"><pre class="src">&nbsp;    { m_listeners.addElement(listener); }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;205</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;206</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** Removes a listener from this parser.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;207</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @param listener The listener to be removed. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;208</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">public</span> <span class="keyword">void</span> removeListener (TuneParserListenerInterface listener)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;209</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;    { m_listeners.removeElement(listener); }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;210</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;211</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** abc-file ::= *(abc-tune / comment / linefeed / tex-command / file-fields) */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;212</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">protected</span> <span class="keyword">void</span> parseAbcFile(Set follow) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;213</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;                Set current = FIRST_ABCTUNE.createUnion(FIRST_COMMENT).createUnion(FIRST_LINE_FEED);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;214</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">// are missing TEX COMMAND and FILE FIELDS</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;215</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">//.createUnion(FIRST_TEX_COMMAND);//.createUnion(FIRST_FILE_FIELDS);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;216</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;                m_scanner.setFinaleStateAutomata(AutomataFactory.getAutomata(current.getTypes()));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;217</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;                m_token = m_scanner.nextToken();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;218</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;                m_tokenType = m_token.getType();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;219</td>  <td class="nbHitsCovered">&nbsp;6221</td>  <td class="src"><pre class="src">&nbsp;                <span class="keyword">while</span> (m_token!=<span class="keyword">null</span>) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;220</td>  <td class="nbHitsCovered">&nbsp;6214</td>  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">if</span> (FIRST_ABCTUNE.contains(m_token.getType())) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;221</td>  <td class="nbHitsCovered">&nbsp;2055</td>  <td class="src"><pre class="src">&nbsp;                                notifyListenersForTuneBegin();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;222</td>  <td class="nbHitsCovered">&nbsp;2055</td>  <td class="src"><pre class="src">&nbsp;                                Tune tune = parseAbcTune(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;223</td>  <td class="nbHitsCovered">&nbsp;2055</td>  <td class="src"><pre class="src">&nbsp;                                notifyListenersForTuneEnd(tune);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;224</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;225</td>  <td class="nbHitsCovered">&nbsp;4159</td>  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">else</span> <span class="keyword">if</span> (FIRST_COMMENT.contains(m_token.getType()))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;226</td>  <td class="nbHitsCovered">&nbsp;35</td>  <td class="src"><pre class="src">&nbsp;                                parseComment(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;227</td>  <td class="nbHitsCovered">&nbsp;4124</td>  <td class="src"><pre class="src">&nbsp;                        <span class="keyword">else</span> <span class="keyword">if</span> (FIRST_LINE_FEED.contains(m_token.getType()))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;228</td>  <td class="nbHitsCovered">&nbsp;4124</td>  <td class="src"><pre class="src">&nbsp;                                accept(AbcTokenType.LINE_FEED, current, (current.createUnion(follow)));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;229</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//else if (Syntax.FIRST_TEX_COMMAND.contains(token.getType())) parseAbcTune(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;230</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//else if (Syntax.FIRST_FILE_FIELDS.contains(token.getType())) parseAbcTune(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;231</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;232</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;233</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
<tr>  <td class="numLine">&nbsp;234</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">/** Inits the parsing : sets the starting state of the current Set +</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;235</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">         * sets the finale state automata of the scanner + retrieves the first </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;236</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">         * token and its type.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;237</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">         * @return The starting state of the current Set as it should</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;238</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">         * be at the begining of the parsing. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;239</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">/*protected Set initParsing() {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;240</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                Set startingSet = FIRST_ABCTUNE.createUnion(FIRST_COMMENT).createUnion(FIRST_LINE_FEED);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;241</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                // are missing TEX COMMAND and FILE FIELDS</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;242</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                //.createUnion(FIRST_TEX_COMMAND);//.createUnion(FIRST_FILE_FIELDS);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;243</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                m_scanner.setFinaleStateAutomata(AutomataFactory.getAutomata(startingSet.getTypes()));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;244</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                m_token = m_scanner.nextToken();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;245</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                m_tokenType = m_token.getType();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;246</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">                return startingSet;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;247</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        }*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;248</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;249</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** abc-tune ::= abc-header abc-music */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;250</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Tune parseAbcTune(Set follow) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;251</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().<span class="comment">/*union(FIRST_ABCHEADER).*/</span>union(FIRST_ABC_MUSIC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;252</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      parseAbcHeader(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;253</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_ABC_MUSIC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;254</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      parseAbcMusic(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;255</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> m_tune;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;256</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;257</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;258</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** other-fields ::= field-area / field-book / field-composer / field-discography /</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;259</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * field-elemskip / field-group / field-history / field-information / </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;260</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * field-default-length / field-meter / field-notes / field-origin / field-parts / </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;261</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * field-tempo / field-rhythm / field-source / field-transcrnotes / comment */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;262</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseOtherFields(Set follow) <span class="comment">//throws TuneNotationException</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;263</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;264</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("AbcScoreParser - parse()");</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;265</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// CURRENT, for any given rule S contains all terminals accepted by S</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;266</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// as well as the set of all the FIRSTs for all other rules invoked by S.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;267</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//Object returnedObject = null;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;268</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/*        Set current = FIRST_FIELD_AREA.union(FIRST_FIELD_BOOK).union(FIRST_FIELD_COMPOSER)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;269</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            .createUnion(FIRST_FIELD_DISCOGRAPHY).createUnion(FIRST_FIELD_ELEMSKIP).createUnion(FIRST_FIELD_GROUP)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;270</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            .createUnion(FIRST_FIELD_HISTORY).createUnion(FIRST_FIELD_INFORMATION).createUnion(FIRST_FIELD_NOTES)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;271</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            .createUnion(FIRST_FIELD_ORIGIN).createUnion(FIRST_FIELD_RHYTHM).createUnion(FIRST_FIELD_SOURCE)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;272</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            .createUnion(FIRST_FIELD_TRANSCRNOTES).createUnion(FIRST_COMMENT);*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;273</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;274</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/*        if (m_tokenType.equals(AbcTokenType.FIELD_AREA)) current.remove(FIRST_FIELD_AREA);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;275</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_BOOK)) current.remove(FIRST_FIELD_BOOK);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;276</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_COMPOSER)) current.remove(FIRST_FIELD_COMPOSER);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;277</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_DISCOGRAPHY))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;278</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          current.remove(FIRST_FIELD_DISCOGRAPHY);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;279</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_ELEMSKIP)) current.remove(FIRST_FIELD_ELEMSKIP);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;280</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_GROUP)) current.remove(FIRST_FIELD_GROUP);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;281</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_HISTORY)) current.remove(FIRST_FIELD_HISTORY);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;282</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_INFORMATION)) current.remove(FIRST_FIELD_INFORMATION);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;283</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_DEFAULT_LENGTH)) current.remove(FIRST_FIELD_DEFAULT_LENGTH);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;284</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_METER)) current.remove(FIRST_FIELD_METER);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;285</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_NOTES)) current.remove(FIRST_FIELD_NOTES);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;286</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_ORIGIN)) current.remove(FIRST_FIELD_ORIGIN);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;287</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_RHYTHM)) current.remove(FIRST_FIELD_RHYTHM);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;288</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_SOURCE)) current.remove(FIRST_FIELD_SOURCE);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;289</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        else if (m_tokenType.equals(AbcTokenType.FIELD_TRANSCRNOTES)) current.remove(FIRST_FIELD_TRANSCRNOTES);*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;290</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;291</td>  <td class="nbHitsCovered">&nbsp;13565</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FIELD_HISTORY))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;292</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;          parseFieldHistory(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;293</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;294</td>  <td class="nbHitsCovered">&nbsp;13564</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FIELD_DEFAULT_LENGTH))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;295</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;296</td>  <td class="nbHitsCovered">&nbsp;1570</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">short</span> defaultNoteLength =  parseFieldDefaultLength(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;297</td>  <td class="nbHitsCovered">&nbsp;1570</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (defaultNoteLength!=-1)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;298</td>  <td class="nbHitsCovered">&nbsp;1570</td>  <td class="src"><pre class="src">&nbsp;            m_defaultNoteLength = defaultNoteLength;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;299</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;300</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;301</td>  <td class="nbHitsCovered">&nbsp;11994</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FIELD_METER))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;302</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;303</td>  <td class="nbHitsCovered">&nbsp;1582</td>  <td class="src"><pre class="src">&nbsp;          TimeSignature meter = parseFieldMeter(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;304</td>  <td class="nbHitsCovered">&nbsp;1582</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (meter!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;305</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;306</td>  <td class="nbHitsCovered">&nbsp;1582</td>  <td class="src"><pre class="src">&nbsp;            m_score.addElement(meter);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;307</td>  <td class="nbHitsCovered">&nbsp;1582</td>  <td class="src"><pre class="src">&nbsp;            m_defaultNoteLength = meter.getDefaultNoteLength();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;308</td>  <td class="nbHitsCovered">&nbsp;1582</td>  <td class="src"><pre class="src">&nbsp;            m_timeSignature = meter;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;309</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;310</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;311</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;312</td>  <td class="nbHitsCovered">&nbsp;10412</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FIELD_PARTS))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;313</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;314</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          MultiPartsDefinition parts = parseFieldParts(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;315</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (parts!=<span class="keyword">null</span>) m_tune.setMultiPartsDefinition(parts);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;316</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;317</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;318</td>  <td class="nbHitsCovered">&nbsp;10410</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FIELD_TEMPO))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;319</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;320</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;          Tempo tempo = parseFieldTempo(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;321</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (tempo!=<span class="keyword">null</span>) m_score.addElement(tempo);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;322</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;323</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;324</td>  <td class="nbHitsCovered">&nbsp;10232</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.COMMENT))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;325</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;326</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//current.remove(AbcTokenType.COMMENT);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;327</td>  <td class="nbHitsCovered">&nbsp;413</td>  <td class="src"><pre class="src">&nbsp;          parseComment(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;328</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;329</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;330</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;331</td>  <td class="nbHitsCovered">&nbsp;9819</td>  <td class="src"><pre class="src">&nbsp;          AbcTextField field = parseField(m_tokenType, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;332</td>  <td class="nbHitsCovered">&nbsp;9819</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (field!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;333</td>  <td class="nbHitsCovered">&nbsp;9819</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (field.getType() == AbcTextField.AREA) m_tune.setArea(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;334</td>  <td class="nbHitsCovered">&nbsp;9819</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.BOOK) m_tune.setBook(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;335</td>  <td class="nbHitsCovered">&nbsp;7817</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() ==  AbcTextField.COMPOSER) m_tune.setComposer(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;336</td>  <td class="nbHitsCovered">&nbsp;5803</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.DISCOGRAPHY) m_tune.setDiscography(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;337</td>  <td class="nbHitsCovered">&nbsp;5800</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.GROUP) m_tune.setGroup(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;338</td>  <td class="nbHitsCovered">&nbsp;5800</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.HISTORY) m_tune.addHistory(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;339</td>  <td class="nbHitsCovered">&nbsp;5800</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.INFORMATION) m_tune.setInformation(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;340</td>  <td class="nbHitsCovered">&nbsp;5800</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.NOTES) m_tune.setNotes(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;341</td>  <td class="nbHitsCovered">&nbsp;5791</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.ORIGIN) m_tune.setOrigin(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;342</td>  <td class="nbHitsCovered">&nbsp;3779</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.RHYTHM) m_tune.setRhythm(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;343</td>  <td class="nbHitsCovered">&nbsp;1820</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.SOURCE) m_tune.setSource(field.getText());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;344</td>  <td class="nbHitsCovered">&nbsp;1817</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span> <span class="keyword">if</span> (field.getType() == AbcTextField.TRANSCRNOTES) m_tune.addTranscriptionNotes(field.getText());</pre></td></tr>
<tr>  <td class="numLine">&nbsp;345</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;346</td>  <td class="nbHitsCovered">&nbsp;13565</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;347</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;348</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> AbcTextField parseField(TokenType tokenType, Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;349</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;350</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("TuneParser - parseFieldArea(" + token + ")");</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;351</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        Set current= <span class="keyword">new</span> Set().union(FIRST_END_OF_LINE).union(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;352</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;353</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        String ret = accept(tokenType, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;354</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;355</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;356</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        String text = accept(AbcTokenType.TEXT, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;357</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;358</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;359</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;360</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;361</td>  <td class="nbHitsCovered">&nbsp;11900</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (ret!=<span class="keyword">null</span> &amp;&amp; text!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;362</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;363</td>  <td class="nbHitsCovered">&nbsp;11898</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_AREA)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.AREA, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;364</td>  <td class="nbHitsCovered">&nbsp;11898</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_BOOK)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.BOOK, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;365</td>  <td class="nbHitsCovered">&nbsp;9896</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_COMPOSER)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.COMPOSER, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;366</td>  <td class="nbHitsCovered">&nbsp;7882</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_DISCOGRAPHY)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.DISCOGRAPHY, text);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;367</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//else if (tokenType.equals(AbcTokenType.FIELD_ELEMSKIP)) return new AbcTextField(AbcTextField.ELEMSKIP, text);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;368</td>  <td class="nbHitsCovered">&nbsp;7879</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_GROUP)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.GROUP, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;369</td>  <td class="nbHitsCovered">&nbsp;7879</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_INFORMATION)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.INFORMATION, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;370</td>  <td class="nbHitsCovered">&nbsp;7879</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_NOTES)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.NOTES, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;371</td>  <td class="nbHitsCovered">&nbsp;7870</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_ORIGIN)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.ORIGIN, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;372</td>  <td class="nbHitsCovered">&nbsp;5858</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_RHYTHM)) </pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;373</td>  <td class="nbHitsCovered">&nbsp;1959</td>  <td class="src"><pre class="src">&nbsp;                  <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.RHYTHM, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;374</td>  <td class="nbHitsCovered">&nbsp;3899</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_SOURCE)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.SOURCE, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;375</td>  <td class="nbHitsCovered">&nbsp;3896</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_TITLE)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.TITLE, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;376</td>  <td class="nbHitsCovered">&nbsp;1819</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_TRANSCRNOTES)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.TRANSCRNOTES, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;377</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (tokenType.equals(AbcTokenType.FIELD_WORDS)) <span class="keyword">return</span> <span class="keyword">new</span> AbcTextField(AbcTextField.WORDS, text);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;378</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;379</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;380</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;381</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">return</span> <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;382</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;383</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;384</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-default-length ::= "L:" note-length-strict end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;385</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">short</span> parseFieldDefaultLength(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;386</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;387</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("TuneParser - parseFieldArea(" + token + ")");</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;388</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_NOTE_LENGTH_STRICT).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;389</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;390</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FIELD_DEFAULT_LENGTH, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;391</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;392</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_NOTE_LENGTH_STRICT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;393</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">short</span> noteLength = parseNoteLengthStrict(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;394</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;395</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;396</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;397</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;398</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> noteLength;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;399</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;400</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;401</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note-length ::= [1*DIGIT] ["/" [1*DIGIT]] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;402</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Fraction parseNoteLength(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;403</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;404</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;405</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> num = 1;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;406</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> denom = 1;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;407</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;408</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.NUMBER))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;409</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;410</td>  <td class="nbHitsCovered">&nbsp;4407</td>  <td class="src"><pre class="src">&nbsp;        String acc = accept(AbcTokenType.NUMBER, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;411</td>  <td class="nbHitsCovered">&nbsp;4407</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (acc!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;412</td>  <td class="nbHitsCovered">&nbsp;4407</td>  <td class="src"><pre class="src">&nbsp;          num = Byte.parseByte(acc);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;413</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;414</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FRACTION))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;415</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;416</td>  <td class="nbHitsCovered">&nbsp;1618</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;417</td>  <td class="nbHitsCovered">&nbsp;1618</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FRACTION, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;418</td>  <td class="nbHitsCovered">&nbsp;1618</td>  <td class="src"><pre class="src">&nbsp;        denom=2; <span class="comment">// If only '/' in the notation, means divided by 2.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;419</td>  <td class="nbHitsCovered">&nbsp;1618</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;420</td>  <td class="nbHitsCovered">&nbsp;1618</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.NUMBER))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;421</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;422</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          String acc = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;423</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (acc!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;424</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            denom = Byte.parseByte(acc);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;425</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;426</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;427</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;       <span class="keyword">return</span> <span class="keyword">new</span> Fraction(num, denom);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;428</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;429</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;430</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note-length-strict ::= 1*DIGIT "/" 1*DIGIT */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;431</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">short</span> parseNoteLengthStrict(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;432</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;433</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;434</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">short</span> noteLength = -1;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;435</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        String numString = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;436</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;437</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;438</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FRACTION, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;439</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;440</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;441</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        String denomString = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;442</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (numString!=<span class="keyword">null</span> &amp;&amp; denomString!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;443</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;444</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">int</span> num = Integer.parseInt(numString);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;445</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">int</span> denom = Integer.parseInt(denomString);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;446</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;          noteLength = Note.convertToNoteLengthStrict(num, denom);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;447</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;448</td>  <td class="nbHitsCovered">&nbsp;1595</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> noteLength;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;449</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;450</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;451</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-meter ::= "M:" meter end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;452</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> TimeSignature parseFieldMeter(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;453</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;454</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_METER).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;455</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        TimeSignature meter = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;456</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;457</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FIELD_METER, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;458</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;459</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_METER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;460</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        meter = parseMeter(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;461</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;462</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;463</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;464</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;465</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> meter;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;466</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;467</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;468</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** meter ::= "C" / "C|" / meter-fraction */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;469</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> TimeSignature parseMeter(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;470</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;471</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;472</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;      TimeSignature meter = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;473</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.C_METER))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;474</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;475</td>  <td class="nbHitsCovered">&nbsp;128</td>  <td class="src"><pre class="src">&nbsp;        String C = accept(AbcTokenType.C_METER, <span class="keyword">null</span>, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;476</td>  <td class="nbHitsCovered">&nbsp;128</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (C.equals(<span class="string">"C"</span>))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;477</td>  <td class="nbHitsCovered">&nbsp;32</td>  <td class="src"><pre class="src">&nbsp;          meter = <span class="keyword">new</span> TimeSignature(4,4);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;478</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;479</td>  <td class="nbHitsCovered">&nbsp;96</td>  <td class="src"><pre class="src">&nbsp;          meter = <span class="keyword">new</span> TimeSignature(2,2);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;480</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;481</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;482</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        meter = parseMeterFraction(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;483</td>  <td class="nbHitsCovered">&nbsp;1604</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> meter;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;484</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;485</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;486</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** meter-fraction ::= 1*DIGIT "/" 1*DIGIT */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;487</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> TimeSignature parseMeterFraction(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;488</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;489</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;490</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        TimeSignature fraction = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;491</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        String numString = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;492</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;493</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;494</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FRACTION, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;495</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;496</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;497</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        String denomString = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;498</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (numString!=<span class="keyword">null</span> &amp;&amp; denomString!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;499</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;500</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">int</span> num = Integer.parseInt(numString);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;501</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">int</span> denom = Integer.parseInt(denomString);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;502</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;          fraction = <span class="keyword">new</span> TimeSignature(num, denom);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;503</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;504</td>  <td class="nbHitsCovered">&nbsp;1476</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> fraction;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;505</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;506</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;507</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-parts ::= "P:" parts end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;508</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> MultiPartsDefinition parseFieldParts(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;509</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;510</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_PARTS).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;511</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;512</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FIELD_PARTS, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;513</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;514</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_PARTS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;515</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        MultiPartsDefinition parts = parseParts(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;516</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;517</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;518</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;519</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> parts;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;520</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;521</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;522</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-part ::= "P:" part end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;523</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">char</span> parseFieldPart(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;524</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;525</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_END_OF_LINE).union(AbcTokenType.PART);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;526</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.FIELD_PARTS, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;527</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current.remove(AbcTokenType.PART);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;528</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        String partLabelString = accept(AbcTokenType.PART, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;529</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">char</span> partLabel = <span class="string">' '</span>;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;530</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (partLabelString!=<span class="keyword">null</span>)</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;531</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          partLabel = partLabelString.charAt(0);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;532</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;533</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current.remove(FIRST_END_OF_LINE);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;534</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        parseEndOfLine(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;535</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> partLabel;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;536</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;537</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;538</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** parts ::= 1*part-spec */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;539</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> MultiPartsDefinition parseParts(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;540</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;541</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_PART_SPEC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;542</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;      MultiPartsDefinition parts = <span class="keyword">new</span> MultiPartsDefinition();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;543</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;544</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;545</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;         RepeatedPartAbstract partSpec = parsePartSpec(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;546</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;         <span class="keyword">if</span> (partSpec!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;547</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;           parts.addPart(partSpec);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;548</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;549</td>  <td class="nbHitsCovered">&nbsp;7</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (FIRST_PART_SPEC.contains(m_tokenType));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;550</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> parts;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;551</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;552</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;553</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** part-spec ::= (part / ( "(" 1*part-spec ")" ) ) *DIGIT */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;554</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> RepeatedPartAbstract parsePartSpec(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;555</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;556</td>  <td class="nbHitsCovered">&nbsp;9</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_PART_SPEC).union(AbcTokenType.PART).union(AbcTokenType.PARENTHESIS_OPEN)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;557</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          .union(AbcTokenType.PARENTHESIS_CLOSE).union(AbcTokenType.DIGIT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;558</td>  <td class="nbHitsCovered">&nbsp;9</td>  <td class="src"><pre class="src">&nbsp;      RepeatedPartAbstract parts = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;559</td>  <td class="nbHitsCovered">&nbsp;9</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.PARENTHESIS_OPEN))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;560</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;561</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.PARENTHESIS_OPEN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;562</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.PARENTHESIS_OPEN, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;563</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        parts = <span class="keyword">new</span> MultiPartsDefinition();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;564</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;565</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;566</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          RepeatedPartAbstract partSpec = parsePartSpec(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;567</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (partSpec!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;568</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;            ((MultiPartsDefinition)parts).addPart(partSpec);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;569</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;570</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span>(FIRST_PART_SPEC.contains(m_tokenType));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;571</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_PART_SPEC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;572</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.PARENTHESIS_CLOSE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;573</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.PARENTHESIS_CLOSE, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;574</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;575</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;576</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">// we suppose it's a AbcTokenType.PART then</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;577</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;578</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.PART);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;579</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        String partNameAsString = accept(AbcTokenType.PART, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;580</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.PARENTHESIS_OPEN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;581</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.PARENTHESIS_CLOSE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;582</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (partNameAsString!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;583</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;584</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">char</span> partName = partNameAsString.charAt(0);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;585</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//does this part already exist ?</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;586</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (m_tune.getPart(partName)!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;587</td>  <td class="nbHitsCovered">&nbsp;3</td>  <td class="src"><pre class="src">&nbsp;            parts = <span class="keyword">new</span> RepeatedPart(m_tune.getPart(partName));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;588</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;589</td>  <td class="nbHitsCovered">&nbsp;5</td>  <td class="src"><pre class="src">&nbsp;            parts = <span class="keyword">new</span> RepeatedPart(m_tune.createPart(partName));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;590</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;591</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;592</td>  <td class="nbHitsCovered">&nbsp;9</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.DIGIT))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;593</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;594</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.DIGIT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;595</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        String digit = accept(AbcTokenType.DIGIT, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;596</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (digit!=<span class="keyword">null</span> &amp;&amp; parts!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;597</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          parts.setNumberOfRepeats(Integer.parseInt(digit));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;598</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;599</td>  <td class="nbHitsCovered">&nbsp;9</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> parts;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;600</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;601</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;602</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Tempo parseFieldTempo(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;603</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;604</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_TEMPO).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;605</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.FIELD_TEMPO, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;606</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;607</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_TEMPO);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;608</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      Tempo tempo = parseTempo(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;609</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;610</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;611</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;612</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;613</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> tempo;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;614</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;615</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;616</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-tempo ::= "Q:" tempo end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;617</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Tempo parseTempo(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;618</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;619</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;620</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      Tempo tempo = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;621</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">int</span> tempoValue = -1;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;622</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.C_TEMPO))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;623</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;624</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current = <span class="keyword">new</span> Set().union(FIRST_NOTE_LENGTH).union(AbcTokenType.EQUALS).union(AbcTokenType.NUMBER);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;625</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">short</span> refLength = -1;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;626</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.C_TEMPO, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;627</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current = <span class="keyword">new</span> Set(AbcTokenType.EQUALS).union(AbcTokenType.NUMBER);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;628</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        Fraction length = <span class="keyword">new</span> Fraction(1,1);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;629</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (FIRST_NOTE_LENGTH.contains(m_tokenType))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;630</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;631</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          length = parseNoteLength(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;632</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          <span class="keyword">if</span> (length!=<span class="keyword">null</span>)</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;633</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            refLength = (<span class="keyword">short</span>)(m_defaultNoteLength * length.floatValue());</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;634</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;635</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current.remove(AbcTokenType.EQUALS);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;636</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.EQUALS, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;637</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        current.remove(AbcTokenType.NUMBER);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;638</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        String tempoString = accept(AbcTokenType.NUMBER, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;639</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (tempoString!=<span class="keyword">null</span>)</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;640</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          tempoValue = <span class="keyword">new</span> Integer(tempoString).intValue();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;641</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (refLength!=-1 &amp;&amp; tempoValue!=-1)</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;642</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          tempo = <span class="keyword">new</span> Tempo(refLength, tempoValue);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;643</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;644</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;645</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;646</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;        current = <span class="keyword">new</span> Set(AbcTokenType.FRACTION);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;647</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;        String tempoString = accept(AbcTokenType.NUMBER, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;648</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.FRACTION))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;649</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;650</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//tempo has the form noteLengthStrict = 1*digit</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;651</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          String num = tempoString;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;652</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          current = <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(AbcTokenType.EQUALS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;653</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.FRACTION, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;654</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          String denom = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;655</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.EQUALS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;656</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.EQUALS, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;657</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;658</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          tempoString = accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;659</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (num!=<span class="keyword">null</span> &amp;&amp; denom!=<span class="keyword">null</span> &amp;&amp; tempoString!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;660</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="keyword">try</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;661</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          { tempo = <span class="keyword">new</span> Tempo(Note.convertToNoteLengthStrict(<span class="keyword">new</span> Integer(num).intValue(), <span class="keyword">new</span> Integer(denom).intValue()), <span class="keyword">new</span> Integer(tempoString).intValue()); }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;662</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">catch</span> (IllegalArgumentException e)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;663</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;664</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">//Invalid tempo =&gt; just ignore it.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;665</td>  <td class="nbHitsCovered">&nbsp;176</td>  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;666</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;667</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;668</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//tempo has the form 1*digit</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;669</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (tempoString!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;670</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          tempo = <span class="keyword">new</span> Tempo(m_defaultNoteLength, <span class="keyword">new</span> Integer(tempoString).intValue());</pre></td></tr>
<tr>  <td class="numLine">&nbsp;671</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;672</td>  <td class="nbHitsCovered">&nbsp;178</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> tempo;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;673</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;674</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;675</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-history ::= "H:" 1*(text end-of-line) */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;676</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> AbcTextField parseFieldHistory(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;677</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;678</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("TuneParser - parseFieldArea(" + token + ")");</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;679</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        Set current= <span class="keyword">new</span> Set().union(FIRST_END_OF_LINE).union(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;680</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        AbcTextField history = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;681</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;682</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FIELD_HISTORY, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;683</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;684</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;685</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;686</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;          String acc = accept(AbcTokenType.TEXT, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;687</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (acc!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;688</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;689</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (history==<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;690</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;              history = <span class="keyword">new</span> AbcTextField(AbcTextField.HISTORY, acc);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;691</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;692</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;693</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;              String text = history.getText().concat(acc);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;694</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;              history = <span class="keyword">new</span> AbcTextField(AbcTextField.HISTORY, text);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;695</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;696</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;697</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;          parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;698</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;699</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span>(m_tokenType.equals(AbcTokenType.TEXT));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;700</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> history;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;701</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;702</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;703</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-key ::= "K:" key end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;704</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> KeySignature parseFieldKey(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;705</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;706</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      KeySignature key = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;707</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_KEY).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;708</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.FIELD_KEY, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;709</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;710</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_KEY);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;711</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      key = parseKey(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;712</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;713</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;714</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      current = current.union(FIRST_ABC_MUSIC);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;715</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;716</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> key;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;717</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;718</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;719</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** key ::= key-spec / "HP" / "Hp" */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;720</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> KeySignature parseKey(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;721</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;722</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;723</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.KEY_HP))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;724</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;725</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.KEY_HP, <span class="keyword">null</span>, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;726</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;727</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;728</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;729</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> parseKeySpec(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;730</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;731</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;732</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** key-spec ::= keynote [mode-spec] *(" " global-accidental) */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;733</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> KeySignature parseKeySpec(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;734</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;735</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_MODE_SPEC).union(AbcTokenType.SPACE).union(FIRST_GLOBAL_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;736</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        KeySignature key = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;737</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        Note note = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;738</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">byte</span> modeSpec = KeySignature.MAJOR;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;739</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;740</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        note = parseKeyNote(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;741</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (FIRST_MODE_SPEC.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;742</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;743</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;          current = <span class="keyword">new</span> Set(AbcTokenType.SPACE).union(FIRST_GLOBAL_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;744</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;          modeSpec = parseModeSpec(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;745</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;746</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span> &amp;&amp; modeSpec!=-1)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;747</td>  <td class="nbHitsCovered">&nbsp;1643</td>  <td class="src"><pre class="src">&nbsp;          key = <span class="keyword">new</span> KeySignature(note.getHeight(), note.getAccidental(), modeSpec);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;748</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;749</td>  <td class="nbHitsCovered">&nbsp;2550</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span>(m_tokenType.equals(AbcTokenType.SPACE))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;750</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;751</td>  <td class="nbHitsCovered">&nbsp;459</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.SPACE, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;752</td>  <td class="nbHitsCovered">&nbsp;459</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (FIRST_GLOBAL_ACCIDENTAL.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;753</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;754</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">byte</span>[] ga = parseGlobalAccidental(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;755</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (ga!=<span class="keyword">null</span> &amp;&amp; key!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;756</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;              key.setAccidental(ga[0], ga[1]);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;757</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;758</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;759</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> key;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;760</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;761</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;762</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** keynote ::= basenote [key-accidental] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;763</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Note parseKeyNote(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;764</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;765</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        Set current= <span class="keyword">new</span> Set(AbcTokenType.KEY_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;766</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        Note keyNote = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;767</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        String note = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;768</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        String accidental = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;769</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;770</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        note = accept(AbcTokenType.BASE_NOTE, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;771</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;772</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.KEY_ACCIDENTAL))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;773</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;774</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.KEY_ACCIDENTAL);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;775</td>  <td class="nbHitsCovered">&nbsp;8</td>  <td class="src"><pre class="src">&nbsp;          accidental = accept(AbcTokenType.KEY_ACCIDENTAL, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;776</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;777</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;778</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;779</td>  <td class="nbHitsCovered">&nbsp;1643</td>  <td class="src"><pre class="src">&nbsp;          keyNote = <span class="keyword">new</span> Note(Note.convertToNoteType(note), KeySignature.convertToAccidentalType(accidental));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;780</td>  <td class="nbHitsCovered">&nbsp;2091</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> keyNote;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;781</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;782</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;783</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** mode-spec ::= [" "] mode [extratext] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;784</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">byte</span> parseModeSpec(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;785</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;786</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set().union(FIRST_MODE).union(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;787</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">byte</span> modeType = KeySignature.MAJOR;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;788</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/*        if (m_tokenType.equals(AbcTokenType.SPACE))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;789</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">           accept(AbcTokenType.SPACE, current, follow);*/</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;790</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_MODE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;791</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        String stringMode = accept(AbcTokenType.MODE, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;792</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        modeType = KeySignature.convertToModeType(stringMode);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;793</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;794</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.TEXT))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;795</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;796</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          current.remove(AbcTokenType.TEXT);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;797</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          accept(AbcTokenType.TEXT, current, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;798</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;799</td>  <td class="nbHitsCovered">&nbsp;495</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> modeType;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;800</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;801</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;802</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** end-of-line ::= *(" " / HTAB) ["%" text] linefeed */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;803</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseEndOfLine(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;804</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;805</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;        Set current = <span class="keyword">new</span> Set(AbcTokenType.SPACE).union(AbcTokenType.COMMENT).union(AbcTokenType.TEXT).union(AbcTokenType.LINE_FEED);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;806</td>  <td class="nbHitsCovered">&nbsp;19435</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span> (m_tokenType.equals(AbcTokenType.SPACE))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;807</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.SPACE, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;808</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.SPACE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;809</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.COMMENT))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;810</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;811</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.COMMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;812</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.COMMENT, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;813</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;814</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;          accept(AbcTokenType.TEXT, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;815</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;816</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;817</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;818</td>  <td class="nbHitsCovered">&nbsp;19432</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.COMMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;819</td>  <td class="nbHitsCovered">&nbsp;19432</td>  <td class="src"><pre class="src">&nbsp;          current.remove(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;820</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;821</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.LINE_FEED);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;822</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.LINE_FEED, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;823</td>  <td class="nbHitsCovered">&nbsp;19434</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;824</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;825</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** abc-header ::= field-number *comment 1*field-title *other-fields field-key</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;826</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * In practice, many tunes are e-mailed without field-number, </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;827</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * so those wishing to implement an abc parser should treat this ; field as optional. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;828</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> Tune parseAbcHeader(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;829</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;830</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      m_tune = <span class="keyword">new</span> Tune();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;831</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      m_score = m_tune.getScore();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;832</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      Set current= <span class="keyword">new</span> Set().union(FIRST_COMMENT).union(FIRST_FIELD_TITLE).union(FIRST_OTHER_FIELDS).union(FIRST_FIELD_KEY);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;833</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;834</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      Integer number = parseFieldNumber(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;835</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (number!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;836</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        m_tune.setReferenceNumber(number.intValue());</pre></td></tr>
<tr>  <td class="numLine">&nbsp;837</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;838</td>  <td class="nbHitsCovered">&nbsp;2064</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (m_tokenType.equals(AbcTokenType.COMMENT))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;839</td>  <td class="nbHitsCovered">&nbsp;1</td>  <td class="src"><pre class="src">&nbsp;        parseComment(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;840</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;841</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Work around : if the COMMENT is removed from the current</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;842</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//COMMENT is not considered as part as the follow when parsing the title</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;843</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//=&gt; false because a comment can occur after a title : it's part of other</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;844</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//fields.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;845</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      current = <span class="keyword">new</span> Set().union(FIRST_FIELD_TITLE).union(FIRST_OTHER_FIELDS).union(FIRST_FIELD_KEY);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;846</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;847</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;848</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;849</td>  <td class="nbHitsCovered">&nbsp;2077</td>  <td class="src"><pre class="src">&nbsp;        AbcTextField title = parseField(AbcTokenType.FIELD_TITLE, current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;850</td>  <td class="nbHitsCovered">&nbsp;2077</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (title!=<span class="keyword">null</span>) m_tune.addTitle(title.getText());</pre></td></tr>
<tr>  <td class="numLine">&nbsp;851</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;852</td>  <td class="nbHitsCovered">&nbsp;2077</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (m_tokenType.equals(AbcTokenType.FIELD_TITLE));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;853</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;854</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_FIELD_TITLE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;855</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;856</td>  <td class="nbHitsCovered">&nbsp;15628</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (FIRST_OTHER_FIELDS.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;857</td>  <td class="nbHitsCovered">&nbsp;13565</td>  <td class="src"><pre class="src">&nbsp;        parseOtherFields(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;858</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      </pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;859</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_OTHER_FIELDS);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;860</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;861</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_FIELD_KEY);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;862</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//current = current.createUnion(FIRST_ABC_MUSIC);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;863</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      KeySignature key = parseFieldKey(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;864</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (key!=<span class="keyword">null</span>) m_score.addElement(key);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;865</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> m_tune;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;866</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;867</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;868</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** field-number ::= "X:" 1*DIGIT end-of-line */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;869</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Integer parseFieldNumber(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;870</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;871</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        Set current= <span class="keyword">new</span> Set(AbcTokenType.NUMBER).union(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;872</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        Integer number = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;873</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;874</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.FIELD_NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;875</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;876</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        current.remove(AbcTokenType.NUMBER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;877</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        String acc= accept(AbcTokenType.NUMBER, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;878</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (acc!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;879</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;          number = <span class="keyword">new</span> Integer(acc);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;880</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;881</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_END_OF_LINE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;882</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        parseEndOfLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;883</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> number;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;884</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;885</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;886</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** global-accidental ::= accidental basenote */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;887</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">byte</span>[] parseGlobalAccidental(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;888</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;889</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      Set current= <span class="keyword">new</span> Set(AbcTokenType.BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;890</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span>[] globalAccidental = <span class="keyword">new</span> <span class="keyword">byte</span>[2];</pre></td></tr>
<tr>  <td class="numLine">&nbsp;891</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;892</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      String keyAcc = accept(AbcTokenType.ACCIDENTAL, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;893</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> accidentalType = Note.convertToAccidentalType(keyAcc);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;894</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;895</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;896</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      String noteHeigthString = accept(AbcTokenType.BASE_NOTE, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;897</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//byte index = 0;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;898</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> noteHeigth = Note.convertToNoteType(noteHeigthString);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;899</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;900</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      globalAccidental[0] = noteHeigth;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;901</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      globalAccidental[1] = accidentalType;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;902</td>  <td class="nbHitsCovered">&nbsp;452</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> globalAccidental;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;903</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;904</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;905</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** comment ::= "%" text (linefeed / no-line-break / line-break) */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;906</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> parseComment(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;907</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;908</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set(AbcTokenType.TEXT).union(AbcTokenType.LINE_FEED)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;909</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          .union(AbcTokenType.LINE_BREAK).union(AbcTokenType.NO_LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;910</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.COMMENT, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;911</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;912</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.TEXT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;913</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.TEXT, current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;914</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;915</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.LINE_FEED);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;916</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;917</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.NO_LINE_BREAK);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;918</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//String[] endOfLine = {AbcTokenType.LINE_FEED,AbcTokenType.LINE_BREAK,AbcTokenType.NO_LINE_BREAK};</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;919</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.LINE_BREAK)) accept(AbcTokenType.LINE_BREAK, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;920</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.NO_LINE_BREAK)) accept(AbcTokenType.NO_LINE_BREAK, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;921</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span> accept(AbcTokenType.LINE_FEED, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;922</td>  <td class="nbHitsCovered">&nbsp;449</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;923</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    </pre></td></tr>
<tr>  <td class="numLine">&nbsp;924</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//============================================================================================</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;925</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//================================== MUSIC PART ==============================================</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;926</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//============================================================================================</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;927</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** abc-music ::= 1*abc-line linefeed */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;928</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> parseAbcMusic(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;929</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;930</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_ABC_LINE).union(AbcTokenType.LINE_FEED);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;931</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;932</td>  <td class="nbHitsCovered">&nbsp;5579</td>  <td class="src"><pre class="src">&nbsp;        parseAbcLine(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;933</td>  <td class="nbHitsCovered">&nbsp;5579</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (FIRST_ABC_LINE.contains(m_tokenType));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;934</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//current = new Set(AbcTokenType.LINE_FEED);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;935</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//accept(AbcTokenType.LINE_FEED, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;936</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;937</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;938</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** abc-line ::= (1*element line-ender) / mid-tune-field / tex-command */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;939</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> parseAbcLine(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;940</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;941</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;942</td>  <td class="nbHitsCovered">&nbsp;1303</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_ELEMENT.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;943</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;944</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;              Set current = <span class="keyword">new</span> Set().union(FIRST_ELEMENT).union(FIRST_LINE_ENDER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;945</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;        Set currentUnionFollow = current.createUnion(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;946</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;947</td>  <td class="nbHitsCovered">&nbsp;76239</td>  <td class="src"><pre class="src">&nbsp;          parseElement(currentUnionFollow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;948</td>  <td class="nbHitsCovered">&nbsp;76239</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">while</span> (FIRST_ELEMENT.contains(m_tokenType));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;949</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_ELEMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;950</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;        current.remove(FIRST_LINE_ENDER);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;951</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;        parseLineEnder(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;952</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;953</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;954</td>  <td class="nbHitsCovered">&nbsp;102</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (FIRST_MID_TUNE_FIELD.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;955</td>  <td class="nbHitsCovered">&nbsp;79</td>  <td class="src"><pre class="src">&nbsp;          parseMidTuneField(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;956</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">//        else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;957</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">//          parseTexCommand(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;958</td>  <td class="nbHitsCovered">&nbsp;1303</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;959</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;960</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** mid-tune-field ::= tune-field */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;961</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseMidTuneField(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;962</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;963</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();//.union(FIRST_END_OF_LINE);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;964</td>  <td class="nbHitsCovered">&nbsp;79</td>  <td class="src"><pre class="src">&nbsp;      parseTuneField(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;965</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//current.remove(FIRST_END_OF_LINE);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;966</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//parseEndOfLine(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;967</td>  <td class="nbHitsCovered">&nbsp;79</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;968</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;969</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** tune-field ::= field-elemskip / field-key / field-default-length / field-meter / </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;970</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * field-part / field-tempo / field-title / field-words</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;971</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * field-rhythm may not be in tune (?) field-voice not defined yet */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;972</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseTuneField(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;973</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;974</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;975</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;976</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">/*if (FIRST_FIELD_ELEMSKIP.contains(m_tokenType))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;977</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        parseField(AbcTokenType.FIELD_ELEMSKIP, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;978</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      else*/</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;979</td>  <td class="nbHitsCovered">&nbsp;79</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_KEY.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;980</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;981</td>  <td class="nbHitsCovered">&nbsp;28</td>  <td class="src"><pre class="src">&nbsp;        KeySignature key = parseFieldKey(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;982</td>  <td class="nbHitsCovered">&nbsp;28</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (key!=<span class="keyword">null</span>) m_score.addElement(key);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;983</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;984</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;985</td>  <td class="nbHitsCovered">&nbsp;51</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_DEFAULT_LENGTH.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;986</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;987</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">short</span> defaultNoteLength = parseFieldDefaultLength(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;988</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (defaultNoteLength!=-1)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;989</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;          m_defaultNoteLength = defaultNoteLength;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;990</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;991</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;992</td>  <td class="nbHitsCovered">&nbsp;26</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_METER.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;993</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;994</td>  <td class="nbHitsCovered">&nbsp;22</td>  <td class="src"><pre class="src">&nbsp;        TimeSignature meter = parseFieldMeter(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;995</td>  <td class="nbHitsCovered">&nbsp;22</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (meter!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;996</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;997</td>  <td class="nbHitsCovered">&nbsp;22</td>  <td class="src"><pre class="src">&nbsp;          m_score.addElement(meter);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;998</td>  <td class="nbHitsCovered">&nbsp;22</td>  <td class="src"><pre class="src">&nbsp;          m_defaultNoteLength = meter.getDefaultNoteLength();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;999</td>  <td class="nbHitsCovered">&nbsp;22</td>  <td class="src"><pre class="src">&nbsp;          m_timeSignature = meter;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1000</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1001</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1002</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1003</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_PART.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1004</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1005</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">char</span> partLabel = parseFieldPart(follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1006</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (m_tune.getPart(partLabel)!=<span class="keyword">null</span>)</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1007</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          m_score= m_tune.getPart(partLabel).getScore();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1008</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1009</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">// this part hasn't been used in the multi part definition but it's defined.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1010</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          m_score = m_tune.createPart(partLabel).getScore();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1011</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1012</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1013</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_TEMPO.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1014</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1015</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        Tempo tempo = parseFieldTempo(follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1016</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (tempo!=<span class="keyword">null</span>) m_score.addElement(tempo);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1017</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1018</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1019</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_FIELD_WORDS.contains(m_tokenType)) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1020</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        AbcTextField text = parseField(AbcTokenType.FIELD_WORDS, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1021</td>  <td class="nbHitsCovered">&nbsp;4</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (text!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1022</td>  <td class="nbHitsCovered">&nbsp;2</td>  <td class="src"><pre class="src">&nbsp;                m_score.addElement(<span class="keyword">new</span> Words(text.getText()));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1023</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1024</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1025</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        parseField(AbcTokenType.FIELD_TITLE, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1026</td>  <td class="nbHitsCovered">&nbsp;79</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1027</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1028</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** element ::= note-element / tuplet-element / barline / nth-repeat /</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1029</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * begin-slur / end-slur / space / user-defined */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1030</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseElement(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1031</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1032</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1033</td>  <td class="nbHitsCovered">&nbsp;76239</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_NOTE_ELEMENT.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1034</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1035</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//NoteAbstract note = parseNoteElement(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1036</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//Experimentation</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1037</td>  <td class="nbHitsCovered">&nbsp;52036</td>  <td class="src"><pre class="src">&nbsp;        NoteAbstract note = parseNoteElement(follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1038</td>  <td class="nbHitsCovered">&nbsp;52036</td>  <td class="src"><pre class="src">&nbsp;        m_score.addElement(note);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1039</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1040</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1041</td>  <td class="nbHitsCovered">&nbsp;24203</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_TUPLET_ELEMENT.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1042</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1043</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//Experimentation</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1044</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//Tuplet tuplet = parseTupletElement(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1045</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;        Tuplet tuplet = parseTupletElement(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1046</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">// tuplet is not put in the score itself, but notes composing the tuplet</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1047</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;        Vector notes = tuplet.getNotesAsVector();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1048</td>  <td class="nbHitsCovered">&nbsp;992</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;notes.size(); i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1049</td>  <td class="nbHitsCovered">&nbsp;737</td>  <td class="src"><pre class="src">&nbsp;          m_score.addElement(notes.elementAt(i));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1050</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1051</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1052</td>  <td class="nbHitsCovered">&nbsp;23948</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_BARLINE.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1053</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1054</td>  <td class="nbHitsCovered">&nbsp;10009</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">byte</span>[] barLineTypes = BarLine.convertToBarLine(accept(AbcTokenType.BARLINE, <span class="keyword">null</span>, follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1055</td>  <td class="nbHitsCovered">&nbsp;20093</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;barLineTypes.length; i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1056</td>  <td class="nbHitsCovered">&nbsp;10084</td>  <td class="src"><pre class="src">&nbsp;          m_score.addElement(<span class="keyword">new</span> BarLine(barLineTypes[i]));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1057</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1058</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1059</td>  <td class="nbHitsCovered">&nbsp;13939</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_NTH_REPEAT.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1060</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1061</td>  <td class="nbHitsCovered">&nbsp;200</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">byte</span> repeatNumber = convertToRepeatBarLine(accept(AbcTokenType.NTH_REPEAT, <span class="keyword">null</span>, follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1062</td>  <td class="nbHitsCovered">&nbsp;200</td>  <td class="src"><pre class="src">&nbsp;        m_score.addElement(<span class="keyword">new</span> RepeatBarLine(repeatNumber));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1063</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1064</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1065</td>  <td class="nbHitsCovered">&nbsp;13739</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.BEGIN_SLUR))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1066</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1067</td>  <td class="nbHitsCovered">&nbsp;1825</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.BEGIN_SLUR, <span class="keyword">null</span>, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1068</td>  <td class="nbHitsCovered">&nbsp;1825</td>  <td class="src"><pre class="src">&nbsp;        m_isPartOfSlur = <span class="keyword">true</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1069</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1070</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1071</td>  <td class="nbHitsCovered">&nbsp;11914</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.END_SLUR))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1072</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1073</td>  <td class="nbHitsCovered">&nbsp;1824</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.END_SLUR, <span class="keyword">null</span>, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1074</td>  <td class="nbHitsCovered">&nbsp;1824</td>  <td class="src"><pre class="src">&nbsp;        m_isPartOfSlur = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1075</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1076</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1077</td>  <td class="nbHitsCovered">&nbsp;10090</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.SPACE))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1078</td>  <td class="nbHitsCovered">&nbsp;10090</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.SPACE, <span class="keyword">null</span>, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1079</td>  <td class="nbHitsCovered">&nbsp;76239</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1080</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1081</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** tuplet-element ::= tuplet-spec 1*note-element</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1082</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1083</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Tuplet parseTupletElement(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1084</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1085</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_NOTE_ELEMENT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1086</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">int</span>[] tupletSpec = parseTupletSpec(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1087</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (tupletSpec[1]==-1)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1088</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1089</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_timeSignature!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1090</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;         <span class="keyword">if</span> (m_timeSignature.isCoumpound())</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1091</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;           tupletSpec[1]=3;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1092</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;         <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1093</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;           tupletSpec[1]=2;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1094</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1095</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          System.err.println(<span class="string">"Cannot evaluate tuplet : no time signature"</span>);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1096</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1097</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (tupletSpec[2]==-1)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1098</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;        tupletSpec[2]=tupletSpec[0];</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1099</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1100</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      Vector notes = <span class="keyword">new</span> Vector();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1101</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">int</span> notesNumber = tupletSpec[2];</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1102</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1103</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1104</td>  <td class="nbHitsCovered">&nbsp;737</td>  <td class="src"><pre class="src">&nbsp;        NoteAbstract note = parseNoteElement(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1105</td>  <td class="nbHitsCovered">&nbsp;737</td>  <td class="src"><pre class="src">&nbsp;        notes.addElement(note);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1106</td>  <td class="nbHitsCovered">&nbsp;737</td>  <td class="src"><pre class="src">&nbsp;        notesNumber--;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1107</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1108</td>  <td class="nbHitsCovered">&nbsp;737</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span>(FIRST_NOTE_ELEMENT.contains(m_tokenType) &amp;&amp; notesNumber&gt;0);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1109</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> <span class="keyword">new</span> Tuplet(notes, tupletSpec[1], m_defaultNoteLength);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1110</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1111</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1112</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** tuplet-spec ::= "(" DIGIT [":" [DIGIT] [":" [DIGIT]]]</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1113</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * ([0]:[1]:[2]  == (p:q:r </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1114</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * p = the number of notes to be put into time q</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1115</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * q = the time that p notes will be played in</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1116</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * r = the number of notes to continue to do this action for.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1117</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * If q is not specified, it defaults to 3 in compound time</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1118</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * signatures and 2 in simple time signatures. If r is not specified, </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1119</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * it is taken to be the same as p. */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1120</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">int</span>[] parseTupletSpec(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1121</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1122</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set(AbcTokenType.COMA).union(AbcTokenType.DIGIT);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1123</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">int</span>[] tupletDesc = {-1,-1,-1};</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1124</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      String t = accept(AbcTokenType.TUPLET_SPEC, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1125</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (t!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1126</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1127</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;        tupletDesc[0] = Character.getNumericValue(t.charAt(t.length()-1));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1128</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("TUPLET , first : " + tupletDesc[0]);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1129</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1130</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span>(m_tokenType.equals(AbcTokenType.COMA))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1131</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1132</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.COMA, current, follow, <span class="keyword">true</span>);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1133</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.DIGIT))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1134</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1135</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          t = accept(AbcTokenType.DIGIT, current, follow);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1136</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          tupletDesc[1] = Integer.parseInt(t);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1137</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//System.out.println("TUPLET , second  : " + tupletDesc[1]);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1138</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1139</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">if</span>(m_tokenType.equals(AbcTokenType.COMA))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1140</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1141</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          accept(AbcTokenType.COMA, current, follow, <span class="keyword">true</span>);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1142</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.DIGIT))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1143</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1144</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            t = accept(AbcTokenType.DIGIT, current, follow, <span class="keyword">true</span>);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1145</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;            tupletDesc[2] = Integer.parseInt(t);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1146</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            <span class="comment">//System.out.println("TUPLET , third : " + tupletDesc[2]);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1147</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1148</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1149</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1150</td>  <td class="nbHitsCovered">&nbsp;255</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> tupletDesc;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1151</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1152</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1153</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note-element ::= note-stem [broken-rhythm] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1154</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> NoteAbstract parseNoteElement(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1155</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1156</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_BROKEN_RHYTHM);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1157</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//CharStreamPosition beginPosition = m_token.getPosition();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1158</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      NoteAbstract note = parseNoteStem(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1159</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (note!=<span class="keyword">null</span>) {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1160</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;              <span class="comment">//Apply the previously inherited broken rythm if any.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1161</td>  <td class="nbHitsCovered">&nbsp;52722</td>  <td class="src"><pre class="src">&nbsp;              <span class="keyword">if</span> (brknRthmDotsCorrection!=0) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1162</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;                      <span class="keyword">if</span> (brknRthmDotsCorrection&gt;0)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1163</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                              note.setDotted(brknRthmDotsCorrection);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1164</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1165</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                              <span class="keyword">if</span> (brknRthmDotsCorrection&lt;0) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1166</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                                      <span class="keyword">short</span> correctedDuration = (<span class="keyword">short</span>)(((Note)note).getStrictDuration() / (Math.pow(2,-brknRthmDotsCorrection)));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1167</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                                      <span class="keyword">try</span> {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1168</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                                              ((Note)note).setStrictDuration(correctedDuration);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1169</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                      } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1170</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                              ((Note)note).setDuration(correctedDuration);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1171</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                                      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1172</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                              }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1173</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                      <span class="comment">//Once the inherited broken rythm has been applied, no broken </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1174</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                      <span class="comment">//should be applied further.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1175</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;                      brknRthmDotsCorrection = 0;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1176</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;              }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1177</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1178</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.BROKEN_RHYTHM)) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1179</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;              current.remove(FIRST_BROKEN_RHYTHM);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1180</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;              String brokenRhythmString = accept(AbcTokenType.BROKEN_RHYTHM, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1181</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;              <span class="keyword">byte</span> brokenRhythm = convertBrokenRhythm(brokenRhythmString);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1182</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;              <span class="keyword">if</span> (note!=<span class="keyword">null</span>) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1183</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;                      <span class="keyword">if</span> (brokenRhythm&gt;0) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1184</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                              note.setDotted(brokenRhythm);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1185</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;                              brknRthmDotsCorrection = (<span class="keyword">byte</span>)-brokenRhythm; </pre></td></tr>
<tr>  <td class="numLine">&nbsp;1186</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1187</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1188</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                              <span class="keyword">if</span> (brokenRhythm&lt;0) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1189</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                                      <span class="keyword">short</span> correctedDuration = (<span class="keyword">short</span>)(((Note)note).getStrictDuration() / (Math.pow(2,-brokenRhythm)));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1190</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                              <span class="keyword">try</span> {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1191</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                                      ((Note)note).setStrictDuration(correctedDuration);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1192</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                              } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1193</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                                      ((Note)note).setDuration(correctedDuration);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1194</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                              }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1195</td>  <td class="nbHitsCovered">&nbsp;97</td>  <td class="src"><pre class="src">&nbsp;                              brknRthmDotsCorrection = (<span class="keyword">byte</span>)-brokenRhythm;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1196</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1197</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;              }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1198</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1199</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">/*if (note!=null)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1200</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1201</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        int length = m_scanner.getPosition().getCharactersOffset()-beginPosition.getCharactersOffset();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1202</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        try</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1203</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1204</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          ((PositionableNote)note).setBeginPosition(beginPosition);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1205</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          ((PositionableNote)note).setLength(length);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1206</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1207</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        catch(ClassCastException e)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1208</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        //this was a multi note instance not a single note.</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1209</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1210</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          ((PositionableMultiNote)note).setBeginPosition(beginPosition);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1211</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          ((PositionableMultiNote)note).setLength(length);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1212</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1213</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      }*/</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1214</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1215</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1216</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1217</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note-stem ::= [guitar-chord] [grace-notes] *gracings (note / multi-note) */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1218</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> NoteAbstract parseNoteStem(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1219</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1220</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_GUITAR_CHORD).union(FIRST_GRACE_NOTES).union(FIRST_GRACINGS)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1221</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          .union(FIRST_NOTE).union(FIRST_MULTI_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1222</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      NoteAbstract note = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1223</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      Note[] graceNotes = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1224</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">boolean</span> hasGeneralOrnament = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1225</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">boolean</span> up = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1226</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">boolean</span> down = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1227</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">boolean</span> staccato = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1228</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1229</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      String chordName = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1230</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//======================guitar chord</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1231</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_GUITAR_CHORD);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1232</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span>(FIRST_GUITAR_CHORD.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1233</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;        chordName = parseGuitarChord(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1234</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//======================grace notes</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1235</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_GRACE_NOTES);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1236</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span>(FIRST_GRACE_NOTES.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1237</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1238</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;        graceNotes = parseGraceNotes(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1239</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1240</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//======================gracings</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1241</td>  <td class="nbHitsCovered">&nbsp;52978</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (m_tokenType.equals(AbcTokenType.GRACING))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1242</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1243</td>  <td class="nbHitsCovered">&nbsp;205</td>  <td class="src"><pre class="src">&nbsp;        String acc = accept(AbcTokenType.GRACING, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1244</td>  <td class="nbHitsCovered">&nbsp;205</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (acc!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1245</td>  <td class="nbHitsCovered">&nbsp;205</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (acc.equals(<span class="string">"."</span>)) staccato = <span class="keyword">true</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1246</td>  <td class="nbHitsCovered">&nbsp;62</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (acc.equals(<span class="string">"~"</span>)) hasGeneralOrnament = <span class="keyword">true</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1247</td>  <td class="nbHitsCovered">&nbsp;25</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (acc.equals(<span class="string">"u"</span>)) up = <span class="keyword">true</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1248</td>  <td class="nbHitsCovered">&nbsp;15</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">else</span> <span class="keyword">if</span> (acc.equals(<span class="string">"v"</span>)) down = <span class="keyword">true</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1249</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1250</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_GRACINGS);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1251</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1252</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_MULTI_NOTE);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1253</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//======================note or multi note</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1254</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.MULTI_NOTE_BEGIN))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1255</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1256</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;          Vector notes = parseMultiNote(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1257</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;          note = <span class="keyword">new</span> PositionableMultiNote(notes);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1258</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1259</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1260</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1261</td>  <td class="nbHitsCovered">&nbsp;52759</td>  <td class="src"><pre class="src">&nbsp;        note = parseNote(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1262</td>  <td class="nbHitsCovered">&nbsp;52759</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1263</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1264</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (staccato) note.setStaccato(<span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1265</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (hasGeneralOrnament) note.setGeneralGracing(<span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1266</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (up) note.setBow(Note.UP);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1267</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (down) note.setBow(Note.DOWN);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1268</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (chordName!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1269</td>  <td class="nbHitsCovered">&nbsp;56</td>  <td class="src"><pre class="src">&nbsp;            note.setChordName(chordName);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1270</td>  <td class="nbHitsCovered">&nbsp;52708</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">if</span> (graceNotes!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1271</td>  <td class="nbHitsCovered">&nbsp;402</td>  <td class="src"><pre class="src">&nbsp;            note.setGracingNotes(graceNotes);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1272</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1273</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1274</td>  <td class="nbHitsCovered">&nbsp;52773</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1275</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1276</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1277</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** multi-note ::= "[" 1*note "]" </span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1278</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">     * @return a Vector containing Note objects */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1279</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Vector parseMultiNote(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1280</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1281</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_NOTE).union(AbcTokenType.MULTI_NOTE_END);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1282</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      Vector notes = <span class="keyword">new</span> Vector();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1283</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.MULTI_NOTE_BEGIN, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1284</td>  <td class="nbHitsCovered">&nbsp;42</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span> (FIRST_NOTE.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1285</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1286</td>  <td class="nbHitsCovered">&nbsp;28</td>  <td class="src"><pre class="src">&nbsp;        Note note = parseNote(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1287</td>  <td class="nbHitsCovered">&nbsp;28</td>  <td class="src"><pre class="src">&nbsp;        notes.addElement(note);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1288</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1289</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1290</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.MULTI_NOTE_END);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1291</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.MULTI_NOTE_END, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1292</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> notes;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1293</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1294</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1295</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** grace-notes ::= "{" 1*pitch "}" */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1296</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Note[] parseGraceNotes(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1297</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1298</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_PITCH).union(AbcTokenType.GRACING_END);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1299</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.GRACING_BEGIN, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1300</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      Vector gracingNotes = <span class="keyword">new</span> Vector();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1301</td>  <td class="nbHitsCovered">&nbsp;872</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">while</span>(FIRST_PITCH.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1302</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1303</td>  <td class="nbHitsCovered">&nbsp;450</td>  <td class="src"><pre class="src">&nbsp;        Note note = parsePitch(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1304</td>  <td class="nbHitsCovered">&nbsp;450</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1305</td>  <td class="nbHitsCovered">&nbsp;450</td>  <td class="src"><pre class="src">&nbsp;          gracingNotes.addElement(note);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1306</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1307</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_PITCH);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1308</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.GRACING_END);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1309</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.GRACING_END, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1310</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (gracingNotes.isEmpty())</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1311</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">return</span> <span class="keyword">null</span>;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1312</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1313</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1314</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;        Note[] gracings = <span class="keyword">new</span> Note[gracingNotes.size()];</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1315</td>  <td class="nbHitsCovered">&nbsp;872</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;gracingNotes.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1316</td>  <td class="nbHitsCovered">&nbsp;450</td>  <td class="src"><pre class="src">&nbsp;          gracings[i] = (Note)gracingNotes.elementAt(i);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1317</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.arraycopy(gracingNotes.toArray(), 0, gracings,0, gracingNotes.size());</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1318</td>  <td class="nbHitsCovered">&nbsp;422</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> gracings;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1319</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1320</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1321</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1322</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** guitar-chord ::= &lt;"&gt; (text &lt;"&gt; / formal-chord */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1323</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> String parseGuitarChord(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1324</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1325</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(AbcTokenType.GUITAR_CHORD).union(AbcTokenType.CHORD_NAME);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1326</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      String chordName = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1327</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.GUITAR_CHORD, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1328</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.CHORD_NAME);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1329</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      chordName = accept(AbcTokenType.CHORD_NAME, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1330</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      current.remove(AbcTokenType.GUITAR_CHORD);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1331</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      accept(AbcTokenType.GUITAR_CHORD, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1332</td>  <td class="nbHitsCovered">&nbsp;88</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> chordName;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1333</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1334</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1335</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note ::= note-or-rest [note-length] [tie] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1336</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Note parseNote(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1337</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1338</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_NOTE_LENGTH).union(FIRST_TIE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1339</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      PositionableNote note = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1340</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      CharStreamPosition startPosition = m_token.getPosition();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1341</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      note = (PositionableNote)parseNoteOrRest(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1342</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_NOTE_LENGTH);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1343</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_NOTE_LENGTH.contains(m_tokenType)) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1344</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;        Fraction length = parseNoteLength(current.createUnion(follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1345</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>) {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1346</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="keyword">try</span> {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1347</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">//Try to convert the abc duration into standard note duration</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1348</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;                        DurationDescription d = AbcToolkit.getAbsoluteDurationFor(length, m_defaultNoteLength);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1349</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;                        note.setStrictDuration(d.getStrictDuration());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1350</td>  <td class="nbHitsCovered">&nbsp;6024</td>  <td class="src"><pre class="src">&nbsp;                        note.setDotted(d.countDots());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1351</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                } <span class="keyword">catch</span> (IllegalArgumentException e) {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1352</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">//The duration cannot be converted into standard duration</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1353</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                        <span class="comment">//So use the absolute duration instead.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1354</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;                        note.setDuration((<span class="keyword">short</span>)(m_defaultNoteLength*length.floatValue()));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1355</td>  <td class="nbHitsCovered">&nbsp;12048</td>  <td class="src"><pre class="src">&nbsp;                }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1356</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1357</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        </pre></td></tr>
<tr>  <td class="numLine">&nbsp;1358</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1359</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1360</td>  <td class="nbHitsCovered">&nbsp;46763</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1361</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;                <span class="comment">//The note duration is equal to the default note duration.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1362</td>  <td class="nbHitsCovered">&nbsp;46712</td>  <td class="src"><pre class="src">&nbsp;                note.setStrictDuration(m_defaultNoteLength);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1363</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_TIE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1364</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.TIE))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1365</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1366</td>  <td class="nbHitsCovered">&nbsp;51</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.TIE, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1367</td>  <td class="nbHitsCovered">&nbsp;51</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (note!=<span class="keyword">null</span>) note.setIsTied(<span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1368</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1369</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1370</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1371</td>  <td class="nbHitsCovered">&nbsp;52736</td>  <td class="src"><pre class="src">&nbsp;        CharStreamPosition endPosition = m_scanner.getPosition();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1372</td>  <td class="nbHitsCovered">&nbsp;52736</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">int</span> length = endPosition.getCharactersOffset() -</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1373</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            startPosition.getCharactersOffset();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1374</td>  <td class="nbHitsCovered">&nbsp;52736</td>  <td class="src"><pre class="src">&nbsp;        note.setBeginPosition(startPosition);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1375</td>  <td class="nbHitsCovered">&nbsp;52736</td>  <td class="src"><pre class="src">&nbsp;        note.setLength(length);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1376</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1377</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1378</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1379</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1380</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** note-or-rest ::= pitch / rest */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1381</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Note parseNoteOrRest(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1382</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1383</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1384</td>  <td class="nbHitsCovered">&nbsp;52787</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.REST))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1385</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1386</td>  <td class="nbHitsCovered">&nbsp;108</td>  <td class="src"><pre class="src">&nbsp;        PositionableNote note = <span class="keyword">new</span> PositionableNote(Note.convertToNoteType(accept(AbcTokenType.REST, <span class="keyword">null</span>, follow)), AccidentalType.NONE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1387</td>  <td class="nbHitsCovered">&nbsp;108</td>  <td class="src"><pre class="src">&nbsp;        note.setPartOfSlur(m_isPartOfSlur);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1388</td>  <td class="nbHitsCovered">&nbsp;108</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1389</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1390</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1391</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//experimentation</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1392</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//return parsePitch(current.createUnion(follow));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1393</td>  <td class="nbHitsCovered">&nbsp;52679</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> parsePitch(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1394</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1395</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1396</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** pitch ::= [accidental] basenote [octave] */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1397</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Note parsePitch(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1398</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1399</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      Set current = <span class="keyword">new</span> Set().union(FIRST_BASE_NOTE).union(FIRST_OCTAVE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1400</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      Note note = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1401</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> accidental = AccidentalType.NONE;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1402</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> noteHeigth = 0;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1403</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> octaveTransposition = 0;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1404</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1405</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.ACCIDENTAL))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1406</td>  <td class="nbHitsCovered">&nbsp;375</td>  <td class="src"><pre class="src">&nbsp;        accidental = Note.convertToAccidentalType(accept(AbcTokenType.ACCIDENTAL, current, follow));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1407</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_BASE_NOTE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1408</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      String heigth = accept(AbcTokenType.BASE_NOTE, current, follow, <span class="keyword">true</span>);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1409</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (heigth!=<span class="keyword">null</span>) noteHeigth = Note.convertToNoteType(heigth);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1410</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      current.remove(FIRST_OCTAVE);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1411</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_OCTAVE.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1412</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1413</td>  <td class="nbHitsCovered">&nbsp;92</td>  <td class="src"><pre class="src">&nbsp;        String octave = accept(AbcTokenType.OCTAVE, current, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1414</td>  <td class="nbHitsCovered">&nbsp;92</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (octave!=<span class="keyword">null</span>) octaveTransposition = convertToOctaveTransposition(octave);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1415</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1416</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1417</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (heigth!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1418</td>  <td class="nbHitsCovered">&nbsp;53078</td>  <td class="src"><pre class="src">&nbsp;        note = <span class="keyword">new</span> PositionableNote(noteHeigth, accidental, octaveTransposition);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1419</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (note!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1420</td>  <td class="nbHitsCovered">&nbsp;53078</td>  <td class="src"><pre class="src">&nbsp;        note.setPartOfSlur(m_isPartOfSlur);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1421</td>  <td class="nbHitsCovered">&nbsp;53129</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> note;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1422</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1423</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1424</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">/** line-ender ::= comment / linefeed / line-break / no-line-break */</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1425</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> <span class="keyword">void</span> parseLineEnder(Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1426</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1427</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//Set current = new Set();</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1428</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (FIRST_COMMENT.contains(m_tokenType))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1429</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        parseComment(follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1430</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1431</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.LINE_BREAK))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1432</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.LINE_BREAK, <span class="keyword">null</span>, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1433</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1434</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType.equals(AbcTokenType.NO_LINE_BREAK))</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1435</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        accept(AbcTokenType.NO_LINE_BREAK, <span class="keyword">null</span>, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1436</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span><span class="comment">//if (m_tokenType.equals(AbcTokenType.LINE_FEED))</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1437</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;        accept(AbcTokenType.LINE_FEED, <span class="keyword">null</span>, follow);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1438</td>  <td class="nbHitsCovered">&nbsp;1201</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1439</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1440</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/*    private void parseTexCommand(Set follow)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1441</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">    {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1442</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      Set current = new Set(AbcTokenType.TEXT).createUnion(AbcTokenType.LINE_FEED);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1443</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      accept(AbcTokenType.TEX_COMMAND, current, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1444</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      current.remove(AbcTokenType.TEXT);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1445</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      accept(AbcTokenType.TEXT, current, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1446</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      current.remove(AbcTokenType.LINE_FEED);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1447</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      accept(AbcTokenType.LINE_FEED, current, follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1448</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">    }*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1449</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1450</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1451</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="comment">//==================================================================================</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1452</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1453</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> String accept(TokenType tokenType, Set current, Set follow)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1454</td>  <td class="nbHitsCovered">&nbsp;105349</td>  <td class="src"><pre class="src">&nbsp;    { <span class="keyword">return</span> accept(tokenType, current, follow, <span class="keyword">false</span>); }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1455</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1456</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> String accept(TokenType tokenType, Set current, Set follow, <span class="keyword">boolean</span> isCurrentOptional)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1457</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1458</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//System.out.println("AbcHeaderParser - Try to accept " + token + " with " + set);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1459</td>  <td class="nbHitsCovered">&nbsp;167990</td>  <td class="src"><pre class="src">&nbsp;      String value2return =<span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1460</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">// should be .equals() in theory but as there's only one instance per token</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1461</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">// type, we can directly compare instances instead of values.</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1462</td>  <td class="nbHitsCovered">&nbsp;167990</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (m_tokenType==tokenType)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1463</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1464</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;        notifyListenersForValidToken(m_token);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1465</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;        value2return = m_token.getValue();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1466</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("AbcHeaderParser - ACCEPTED: " + token.getValue()+ "(" + ParserTools.convertToTypeName(token.getType())+")");</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1467</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (isCurrentOptional)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1468</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1469</td>  <td class="nbHitsCovered">&nbsp;62142</td>  <td class="src"><pre class="src">&nbsp;          Set union = getSetResultingUnionFrom(current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1470</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//Set union = current.createUnion(follow);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1471</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">/*          int alreadyCreatedSetIndex = m_setsForAccept.indexOf(union);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1472</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          if (alreadyCreatedSetIndex!=-1)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1473</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1474</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            union= (Set)m_setsForAccept.elementAt(alreadyCreatedSetIndex);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1475</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            //System.out.println("A set has already been created " + m_recreationNb++ + " times for " + union );</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1476</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1477</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1478</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            m_setsForAccept.addElement(union);*/</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1479</td>  <td class="nbHitsCovered">&nbsp;62142</td>  <td class="src"><pre class="src">&nbsp;          m_automata.setDefinition(DefinitionFactory.getDefinition(union.getTypes()));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1480</td>  <td class="nbHitsCovered">&nbsp;62142</td>  <td class="src"><pre class="src">&nbsp;          m_scanner.setFinaleStateAutomata(m_automata);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1481</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//TokenType[] unionArray = union.getTypes();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1482</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//m_automata.setDefinition(DefinitionFactory.getDefinition(unionArray));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1483</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//m_scanner.setFinaleStateAutomata(m_automata);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1484</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//FinaleStateAutomata fsa = getAutomataFor(unionArray);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1485</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//m_scanner.setFinaleStateAutomata(fsa);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1486</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1487</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//typesForAutomata = union;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1488</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1489</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1490</td>  <td class="nbHitsCovered">&nbsp;103137</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (current!=<span class="keyword">null</span> &amp;&amp; current.size()!=0)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1491</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1492</td>  <td class="nbHitsCovered">&nbsp;49002</td>  <td class="src"><pre class="src">&nbsp;          m_automata.setDefinition(DefinitionFactory.getDefinition(current.getTypes()));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1493</td>  <td class="nbHitsCovered">&nbsp;49002</td>  <td class="src"><pre class="src">&nbsp;          m_scanner.setFinaleStateAutomata(m_automata);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1494</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//TokenType[] array = current.getTypes();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1495</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//m_scanner.setFinaleStateAutomata(getAutomataFor(array));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1496</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1497</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1498</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1499</td>  <td class="nbHitsCovered">&nbsp;54135</td>  <td class="src"><pre class="src">&nbsp;          m_automata.setDefinition(DefinitionFactory.getDefinition(follow.getTypes()));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1500</td>  <td class="nbHitsCovered">&nbsp;54135</td>  <td class="src"><pre class="src">&nbsp;          m_scanner.setFinaleStateAutomata(m_automata);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1501</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//TokenType[] array = follow.getTypes();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1502</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">//m_scanner.setFinaleStateAutomata(getAutomataFor(array));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1503</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1504</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//if (scanner.hasNext())</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1505</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1506</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1507</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;          m_token = m_scanner.nextToken();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1508</td>  <td class="nbHitsCovered">&nbsp;165265</td>  <td class="src"><pre class="src">&nbsp;          m_tokenType=m_token.getType();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1509</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1510</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">catch</span> (NoSuchTokenException e)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1511</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1512</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;          m_token=<span class="keyword">null</span>;<span class="comment">//new Token(null,-1,null);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1513</td>  <td class="nbHitsCovered">&nbsp;14</td>  <td class="src"><pre class="src">&nbsp;          m_tokenType=TokenType.UNKNOWN;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1514</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1515</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1516</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1517</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1518</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println(ParserTools.convertToTypeName(tokenType) + " EXPECTED HERE !!!!!!!! @" + scanner.getLineNumber() + ", " + m_scanner.getColumnNumber());</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1519</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (m_token!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1520</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;          notifyListenersForInvalidToken(m_token, m_token.getPosition(), tokenType);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1521</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1522</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          notifyListenersForInvalidToken(<span class="keyword">null</span>, m_scanner.getPosition(), tokenType);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1523</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1524</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        skipTo(current, follow, isCurrentOptional);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1525</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1526</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//System.out.println(m_scanner.getPosition());</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1527</td>  <td class="nbHitsCovered">&nbsp;167990</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> value2return;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1528</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1529</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1530</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">private</span> Set getSetResultingUnionFrom(Set current, Set follow)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1531</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1532</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">/*Set foundSet = null;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1533</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      for (int i=0; i&lt;m_setsForAccept.size() &amp;&amp; foundSet==null; i++)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1534</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1535</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        Set currentSet = (Set)m_setsForAccept.elementAt(i);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1536</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        if (currentSet.size()==(set1.size()+set2.size())</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1537</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            &amp;&amp; currentSet.contains(set1) &amp;&amp; currentSet.contains(set2)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1538</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            )</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1539</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        foundSet = currentSet;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1540</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1541</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      if (foundSet==null)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1542</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1543</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        //System.out.println("creating one set");</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1544</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        foundSet = set1.createUnion(set2);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1545</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">        m_setsForAccept.addElement(foundSet);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1546</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">      }*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1547</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//else</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1548</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("one creation economized : " + m_recreationNb++);</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1549</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;       <span class="comment">//old algorythm:</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1550</td>  <td class="nbHitsCovered">&nbsp;62839</td>  <td class="src"><pre class="src">&nbsp;       <span class="keyword">if</span> (current==<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1551</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;               <span class="keyword">return</span> follow;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1552</td>  <td class="nbHitsCovered">&nbsp;62839</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">return</span> current.createUnion(follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1553</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//return foundSet;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1554</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1555</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1556</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> skipTo(Set current, Set follow, <span class="keyword">boolean</span> isCurrentOptionnal)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1557</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1558</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        Set targetSet = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1559</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">if</span> (!isCurrentOptionnal &amp;&amp; current!=<span class="keyword">null</span> &amp;&amp; current.size()!=0)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1560</td>  <td class="nbHitsCovered">&nbsp;2014</td>  <td class="src"><pre class="src">&nbsp;          targetSet = current;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1561</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1562</td>  <td class="nbHitsCovered">&nbsp;697</td>  <td class="src"><pre class="src">&nbsp;          targetSet = getSetResultingUnionFrom(current, follow);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1563</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("Parser - skipTo("+ targetSet + ") from " + token.getValue() );</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1564</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        m_automata.setDefinition(DefinitionFactory.getDefinition(targetSet.getTypes()));</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1565</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        m_scanner.setFinaleStateAutomata(m_automata);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1566</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//m_scanner.setFinaleStateAutomata(getAutomataFor(targetSet.getTypes()));</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1567</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//===old</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1568</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">/*while (!targetSet.contains(token.getType()))</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1569</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            token = m_scanner.nextToken();*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1570</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="keyword">try</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1571</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1572</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">boolean</span> tokenFound = <span class="keyword">false</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1573</td>  <td class="nbHitsCovered">&nbsp;6997</td>  <td class="src"><pre class="src">&nbsp;          <span class="keyword">while</span> (!tokenFound)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1574</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1575</td>  <td class="nbHitsCovered">&nbsp;4286</td>  <td class="src"><pre class="src">&nbsp;            tokenFound = targetSet.contains(m_tokenType);<span class="comment">//||follow.contains(m_tokenType);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1576</td>  <td class="nbHitsCovered">&nbsp;4286</td>  <td class="src"><pre class="src">&nbsp;            <span class="keyword">if</span> (!tokenFound)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1577</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1578</td>  <td class="nbHitsCovered">&nbsp;1575</td>  <td class="src"><pre class="src">&nbsp;              m_token = m_scanner.nextToken();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1579</td>  <td class="nbHitsCovered">&nbsp;1575</td>  <td class="src"><pre class="src">&nbsp;              m_tokenType=m_token.getType();</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1580</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;            }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1581</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1582</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;          <span class="comment">/*do</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1583</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          {</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1584</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            token = m_scanner.nextToken();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1585</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">            m_tokenType=token.getType();</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1586</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          }</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1587</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;<span class="comment">          while (!targetSet.contains(m_tokenType));*/</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1588</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1589</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">catch</span> (NoSuchTokenException e)</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1590</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1591</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          m_token=<span class="keyword">null</span>;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1592</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;          m_tokenType=TokenType.UNKNOWN;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1593</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1594</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;        <span class="comment">//System.out.println("AbcHeaderParser - skipedTo : "+ ParserTools.convertToTypeName(token.getType()));</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1595</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1596</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1597</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> notifyListenersForTuneBegin() {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1598</td>  <td class="nbHitsCovered">&nbsp;2598</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;m_listeners.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1599</td>  <td class="nbHitsCovered">&nbsp;535</td>  <td class="src"><pre class="src">&nbsp;        ((TuneParserListenerInterface)m_listeners.elementAt(i)).tuneBegin();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1600</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1601</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1602</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> notifyListenersForTuneEnd(Tune tune) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1603</td>  <td class="nbHitsCovered">&nbsp;2598</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;m_listeners.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1604</td>  <td class="nbHitsCovered">&nbsp;535</td>  <td class="src"><pre class="src">&nbsp;        ((TuneParserListenerInterface)m_listeners.elementAt(i)).tuneEnd(tune);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1605</td>  <td class="nbHitsCovered">&nbsp;2063</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1606</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1607</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> notifyListenersForValidToken(Token token) {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1608</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;      TokenEvent evt = <span class="keyword">new</span> TokenEvent(<span class="keyword">this</span>, token);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1609</td>  <td class="nbHitsCovered">&nbsp;185731</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;m_listeners.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1610</td>  <td class="nbHitsCovered">&nbsp;20452</td>  <td class="src"><pre class="src">&nbsp;        ((TuneParserListenerInterface)m_listeners.elementAt(i)).validToken(evt);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1611</td>  <td class="nbHitsCovered">&nbsp;165279</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1612</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1613</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> notifyListenersForInvalidToken(Token token, CharStreamPosition position, TokenType expectedTokenType)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1614</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1615</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;      InvalidTokenEvent evt = <span class="keyword">null</span>;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1616</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (token!=<span class="keyword">null</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1617</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;        evt = <span class="keyword">new</span> InvalidTokenEvent(<span class="keyword">this</span>, token, expectedTokenType);</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1618</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1619</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        evt = <span class="keyword">new</span> InvalidTokenEvent(<span class="keyword">this</span>, position, expectedTokenType);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1620</td>  <td class="nbHitsCovered">&nbsp;3520</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;m_listeners.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1621</td>  <td class="nbHitsCovered">&nbsp;809</td>  <td class="src"><pre class="src">&nbsp;        ((TuneParserListenerInterface)m_listeners.elementAt(i)).invalidToken(evt);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1622</td>  <td class="nbHitsCovered">&nbsp;2711</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1623</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1624</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">void</span> notifyListenersForInvalidCharacter(InvalidCharacterEvent evt)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1625</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1626</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;      <span class="comment">//System.out.println("Parser - ivalid char " + evt + " for " + typesForAutomata);</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1627</td>  <td class="nbHitsCovered">&nbsp;162897</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">for</span> (<span class="keyword">int</span> i=0; i&lt;m_listeners.size();i++)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1628</td>  <td class="nbHitsCovered">&nbsp;38555</td>  <td class="src"><pre class="src">&nbsp;        ((TuneParserListenerInterface)m_listeners.elementAt(i)).invalidCharacter(evt);</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1629</td>  <td class="nbHitsCovered">&nbsp;124342</td>  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1630</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1631</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">byte</span> convertToRepeatBarLine(String barLine)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1632</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1633</td>  <td class="nbHitsCovered">&nbsp;200</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (barLine.equals(<span class="string">"[1"</span>)) <span class="keyword">return</span> 1;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1634</td>  <td class="nbHitsCovered">&nbsp;100</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (barLine.equals(<span class="string">"[2"</span>)) <span class="keyword">return</span> 2;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1635</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (barLine.equals(<span class="string">"|1"</span>)) <span class="keyword">return</span> 1;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1636</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (barLine.equals(<span class="string">":|2"</span>)) <span class="keyword">return</span> 2;</span></pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1637</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;      <span class="keyword">else</span> <span class="keyword">return</span> -1;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1638</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1639</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1640</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">byte</span> convertBrokenRhythm(String brokenRhythm)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1641</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1642</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">byte</span> br = (<span class="keyword">byte</span>)brokenRhythm.length();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1643</td>  <td class="nbHitsCovered">&nbsp;411</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (brokenRhythm.charAt(0)==<span class="string">'&lt;'</span>) <span class="keyword">return</span> (<span class="keyword">byte</span>)-br;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1644</td>  <td class="nbHitsCovered">&nbsp;314</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (brokenRhythm.charAt(0)==<span class="string">'&gt;'</span>) <span class="keyword">return</span> (<span class="keyword">byte</span>)br;</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1645</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;      <span class="keyword">else</span> <span class="keyword">return</span> 0;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1646</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1647</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1648</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    <span class="keyword">protected</span> <span class="keyword">static</span> <span class="keyword">byte</span> convertToOctaveTransposition(String octave)</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1649</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    {</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1650</td>  <td class="nbHitsCovered">&nbsp;92</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">if</span> (octave.charAt(0)==<span class="string">'\''</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1651</td>  <td class="nbHitsCovered">&nbsp;28</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> (<span class="keyword">byte</span>)octave.length();</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1652</td>  <td class="nbHitsCovered">&nbsp;64</td>  <td class="src"><pre class="src">&nbsp;      <span class="keyword">else</span> <span class="keyword">if</span> (octave.charAt(0)==<span class="string">','</span>)</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1653</td>  <td class="nbHitsCovered">&nbsp;64</td>  <td class="src"><pre class="src">&nbsp;        <span class="keyword">return</span> (<span class="keyword">byte</span>)(-octave.length());</pre></td></tr>
<tr>  <td class="numLineCover">&nbsp;1654</td>  <td class="nbHitsUncovered">&nbsp;0</td>  <td class="src"><pre class="src"><span class="srcUncovered">&nbsp;        <span class="keyword">else</span> <span class="keyword">return</span> 0;</span></pre></td></tr>
<tr>  <td class="numLine">&nbsp;1655</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;    }</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1656</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1657</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;}</pre></td></tr>
<tr>  <td class="numLine">&nbsp;1658</td>  <td class="nbHits">&nbsp;</td>
  <td class="src"><pre class="src">&nbsp;</pre></td></tr>
</table>

<div class="footer">Report generated by <a href="http://cobertura.sourceforge.net/" target="_top">Cobertura</a> 1.8 on 1/22/07 1:54 PM.</div>
</body>
</html>
